﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;


namespace MToolStudio.Render
{
    public interface IRenderable
    {
        /// <summary>
        /// the main paint method
        /// </summary>
        /// <param name="g"></param>
        void Paint(Graphics g);

        /// <summary>
        /// paint method to be called before any other paint being called
        /// </summary>
        /// <param name="g"></param>
        void PrePaint(Graphics g);

        /// <summary>
        /// paint method to be called after all the other main paint being called
        /// </summary>
        /// <param name="g"></param>
        void PostPaint(Graphics g);

        /// <summary>
        /// paint method to be called if this object is focused
        /// </summary>
        /// <param name="g"></param>
        void PaintFocus(Graphics g);

        Point Position { get; set; }
        //double Scale { get; set; }
        //Color ForeColor { get; set; }

        /// <summary>
        /// checks whether the current renderable object is selected
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        bool IsSelected(Point p);
    }
}